import {Component, Input, OnInit} from '@angular/core';
import * as fa from '@fortawesome/free-solid-svg-icons';
import {ActivatedRoute, Router} from '@angular/router';
import {isNullOrUndefined} from 'util';
import {Services} from '../module/services';

export let Z3LMModuleId: string;
export let Z3LMMenuId: string;

@Component({
    selector: 'app-zero3-layout-menu',
    templateUrl: './zero3-layout-menu.component.html',
    styleUrls: ['./zero3-layout-menu.component.css']
})
export class Zero3LayoutMenuComponent implements OnInit {

    static modulesLoaded = false;
    static modules = [];
    modules = [];
    @Input('menu')
    menu: { upper: any, self: Zero3LayoutMenuComponent };

    moduleId: string;
    menuId: string;

    method = {
        module: {
            click: (event, module) => {
                const splits = module.href.split('/');
                let menuId = splits[splits.length - 2];
                menuId = isNullOrUndefined(menuId) ?
                    this.modules.find(item => item.id === module.id).menus[0].id : menuId;
                this.router.navigate([module.href, {
                    moduleId: module.id,
                    menuId: menuId
                }]);
            }
        },
        menu: {
            click: (event, module, menu) => {
                this.router.navigate([menu.href, {moduleId: module.id, menuId: menu.id}]);
            }
        }
    };

    // modules = [
    //     {
    //         id: 'message-management',
    //         faIconHead: fa.faTint,
    //         name: '消息管理',
    //         faIconShowStatus: fa.faEllipsisH,
    //         active: false,
    //         href: UrlRou.mesLog.list,
    //         menus: [
    //             {
    //                 id: 'mes-log',
    //                 active: false,
    //                 name: '消息日志',
    //                 href: UrlRou.mesLog.list
    //             },
    //             {
    //                 id: 'mes-template',
    //                 active: false,
    //                 name: '消息模板',
    //                 href: UrlRou.mesTemplate.list
    //             },
    //             {
    //                 id: 'mes-type',
    //                 active: false,
    //                 name: '消息类型',
    //                 href: UrlRou.mesType.list
    //             },
    //            {
    //                 id: 'dra-participate-member',
    //                 active: false,
    //                 name: '参与用户',
    //                 href: UrlRou.draParticipateMember.list,
    //             },
    //         ]
    //     },
    //     {
    //         id: 'config-management',
    //         faIconHead: fa.faTint,
    //         name: '内容管理（CMS）',
    //         faIconShowStatus: fa.faEllipsisH,
    //         active: false,
    //         href: UrlRou.temStyle1.list,
    //         menus: [
    //             {
    //                 id: 'con-play-img-manage',
    //                 active: false,
    //                 name: '轮播图管理',
    //                 href: UrlRou.temStyle1.list
    //             },
    //             {
    //                 id: 'con-zone-manage',
    //                 active: false,
    //                 name: '专区多图',
    //                 href: UrlRou.conZoneManage.list
    //             },
    //             {
    //                 id: 'con-zone-type',
    //                 active: false,
    //                 name: '专区',
    //                 href: UrlRou.conZoneType.list
    //             },
    //             {
    //                 id: 'con-zone-template',
    //                 active: false,
    //                 name: '专区模板',
    //                 href: UrlRou.conZoneTemplate.list
    //             },
    //             {
    //                 id: 'con-version',
    //                 active: false,
    //                 name: '版本',
    //                 href: UrlRou.conVersion.list
    //             },
    //             {
    //                 id: 'soc-article',
    //                 active: false,
    //                 name: '文章',
    //                 href: UrlRou.socArticle.list
    //             },
    //         ]
    //     },
    //     {
    //         id: 'goods-management',
    //         faIconHead: fa.faTint,
    //         name: '商品管理',
    //         faIconShowStatus: fa.faEllipsisH,
    //         active: false,
    //         href: UrlRou.gooGoods.list,
    //         menus: [
    //             {
    //                 id: 'goo-goods',
    //                 active: false,
    //                 name: '商品',
    //                 href: UrlRou.gooGoods.list,
    //             },
    //             {
    //                 id: 'goo-brand',
    //                 active: false,
    //                 name: '品牌',
    //                 href: UrlRou.gooBrand.list,
    //             },
    //             {
    //                 id: 'goo-attribute',
    //                 active: false,
    //                 name: '商品属性',
    //                 href: UrlRou.gooAttribute.list,
    //             },
    //            {
    //                 id: 'goo-attribute-value',
    //                 active: false,
    //                 name: '商品属性值',
    //                 href: UrlRou.gooAttributeValue.list,
    //             },
//               {
//                    id: 'goo-base-goods-specification',
//                    active: false,
//                   name: '规格',
//                    href: UrlRou.gooBaseGoodsSpecification.list,
//                },
//               {
//                    id: 'goo-base-goods-specification-value',
//                    active: false,
//                   name: '规格属性值',
//                    href: UrlRou.gooBaseGoodsSpecificationValue.list,
//                },
    // this line is use for menu
    //             {
    //                 id: 'goo-type-level1',
    //                 active: false,
    //                 name: '一级分类',
    //                 href: UrlRou.gooTypeLevel1.list
    //             },
    //             {
    //                 id: 'goo-type-level2',
    //                 active: false,
    //                 name: '二级分类',
    //                 href: UrlRou.gooTypeLevel2.list
    //             },
    //             {
    //                 id: 'goo_inventory',
    //                 active: false,
    //                 name: '库存',
    //                 href: UrlRou.gooInventory.list
    //             },
    //         ]
    //     },
    //     {
    //         id: 'order-management',
    //         faIconHead: fa.faTint,
    //         name: '订单管理',
    //         faIconShowStatus: fa.faEllipsisH,
    //         active: false,
    //         href: UrlRou.ordOrder.list,
    //         menus: [
    //             {
    //                 id: 'ord-order',
    //                 active: false,
    //                 name: '订单列表',
    //                 href: UrlRou.ordOrder.list,
    //             },
    //             {
    //                 id: 'ord-config',
    //                 active: false,
    //                 name: '订单设置',
    //                 href: UrlRou.temStyle1.list,
    //             },
    //         ]
    //     },
    //     {
    //         id: 'after-sale-management',
    //         faIconHead: fa.faTint,
    //         name: '售后管理',
    //         faIconShowStatus: fa.faEllipsisH,
    //         active: false,
    //         href: UrlRou.temStyle1.list,
    //         menus: [
    //             {
    //                 id: 'aft-apply-order',
    //                 active: false,
    //                 name: '售后申请',
    //                 href: UrlRou.ordOrder.list,
    //             },
    //             {
    //                 id: 'aft-work-order',
    //                 active: false,
    //                 name: '售后工单',
    //                 href: UrlRou.ordOrderLine.list,
    //             },
    //         ]
    //     },
    //     // {
    //     //     id: 'after-sale-management',
    //     //     faIconHead: fa.faTint,
    //     //     name: '售后管理',
    //     //     faIconShowStatus: fa.faEllipsisH,
    //     //     active: false,
    //     //     href: UrlRou.aftApplyOrder.list,
    //     //     menus: [
    //     //        {
    //     //             id: 'aft-apply-order',
    //     //             active: false,
    //     //             name: '售后申请',
    //     //             href: UrlRou.aftApplyOrder.list,
    //     //         },
    //     //        {
    //     //             id: 'aft-work-order',
    //     //             active: false,
    //     //             name: '售后工单',
    //     //             href: UrlRou.aftWorkOrder.list,
    //     //         },
    //     //     ]
    //     // },
    //     {
    //         id: 'wms-management',
    //         faIconHead: fa.faTint,
    //         name: '仓储管理（WMS）',
    //         faIconShowStatus: fa.faEllipsisH,
    //         active: false,
    //         href: UrlRou.wmsPurchaseOrderSelf.list,
    //         menus: [
    //             {
    //                 id: 'wms-purchase-order-self',
    //                 active: false,
    //                 name: '采购单（自营）',
    //                 href: UrlRou.wmsPurchaseOrderSelf.list,
    //             },
    //             {
    //                 id: 'wms-purchase-order-report',
    //                 active: false,
    //                 name: '采购单报表',
    //                 href: UrlRou.temStyle1.list,
    //             },
    //
    //             {
    //                 id: 'wms-purchase-order-three',
    //                 active: false,
    //                 name: '采购申请（第三方）',
    //                 href: UrlRou.wmsPurchaseOrderThree.list,
    //             },
    //             {
    //                 id: 'hr',
    //             },
    //            {
    //                 id: 'wms-stock-put',
    //                 active: false,
    //                 name: '入库管理',
    //                 href: UrlRou.wmsStockPut.list,
    //             },
    //             {
    //                 id: 'wms-stock-transfer',
    //                 active: false,
    //                 name: '调拨管理',
    //                 href: UrlRou.wmsStockTransfer.list,
    //             },
    //            {
    //                 id: 'wms-stock-out',
    //                 active: false,
    //                 name: '出库管理',
    //                 href: UrlRou.wmsStockOut.list,
    //             },
    //            {
    //                 id: 'wms-stock-detail',
    //                 active: false,
    //                 name: '库存出入明细',
    //                 href: UrlRou.wmsStockDetail.list,
    //             },
    //             {
    //                 id: 'hr',
    //             },
    //            {
    //                 id: 'wms-warehouse-manage',
    //                 active: false,
    //                 name: '仓库管理',
    //                 href: UrlRou.wmsWarehouseManage.list,
    //             },
    //            {
    //                 id: 'wms-trays-manage',
    //                 active: false,
    //                 name: '货位管理',
    //                 href: UrlRou.wmsTraysManage.list,
    //             },
    //            {
    //                 id: 'wms-warning-config',
    //                 active: false,
    //                 name: '预警设置',
    //                 href: UrlRou.wmsWarningConfig.list,
    //             },
    //         ]
    //     },
    //     {
    //         id: 'member-management',
    //         faIconHead: fa.faTint,
    //         name: '会员管理（CRM）',
    //         faIconShowStatus: fa.faEllipsisH,
    //         active: false,
    //         href: UrlRou.memMember.list,
    //         menus: [
    //             {
    //                 id: 'mem-member',
    //                 active: false,
    //                 name: '会员',
    //                 href: UrlRou.memMember.list
    //             },
    //             {
    //                 id: 'mem-third-login-info',
    //                 active: false,
    //                 name: '第三方登陆信息',
    //                 href: UrlRou.memThirdLoginInfo.list
    //             },
    //             {
    //                 id: 'mem-jifen',
    //                 active: false,
    //                 name: '积分记录',
    //                 href: UrlRou.memJifen.list
    //             },
    //             {
    //                 id: 'mem-shipping-address',
    //                 active: false,
    //                 name: '收货地址',
    //                 href: UrlRou.memShippingAddress.list
    //             },
    //             {
    //                 id: 'mem-shopping-car',
    //                 active: false,
    //                 name: '购物车',
    //                 href: UrlRou.memShoppingCar.list
    //             },
    //             {
    //                 id: 'mem-collect',
    //                 active: false,
    //                 name: '收藏',
    //                 href: UrlRou.memCollect.list
    //             },
    //             {
    //                 id: 'soc-sign',
    //                 active: false,
    //                 name: '签到设置',
    //                 href: UrlRou.socSign.list
    //             },
    //         ]
    //     },
    //     {
    //         id: 'finance-management',
    //         faIconHead: fa.faTint,
    //         name: '财务管理（SBOM）',
    //         faIconShowStatus: fa.faEllipsisH,
    //         active: false,
    //         href: UrlRou.finFinanceManage.list,
    //         menus: [
    //            {
    //                 id: 'fin-finance-manage',
    //                 active: false,
    //                 name: '财务管理',
    //                 href: UrlRou.finFinanceManage.list,
    //             },
    //            {
    //                 id: 'fin-reconciliation-manage',
    //                 active: false,
    //                 name: '对账管理',
    //                 href: UrlRou.finReconciliationManage.list,
    //             },
    //         ]
    //     },
    //     {
    //         id: 'instant-messaging',
    //         faIconHead: fa.faTint,
    //         name: '即时通讯（IM）',
    //         faIconShowStatus: fa.faEllipsisH,
    //         active: false,
    //         href: UrlRou.aftApplyOrder.list,
    //         menus: [
    //            {
    //                 id: 'ins-messaging',
    //                 active: false,
    //                 name: '通讯管理',
    //                 href: UrlRou.insMessaging.list,
    //             },
    //         ]
    //     },
    //     {
    //         id: 'draw-management',
    //         faIconHead: fa.faTint,
    //         name: '活动管理',
    //         faIconShowStatus: fa.faEllipsisH,
    //         active: false,
    //         href: UrlRou.draFreeLottery.list,
    //         menus: [
    //             {
    //                 id: 'dra-free-lottery',
    //                 active: false,
    //                 name: '免费抽奖',
    //                 href: UrlRou.draFreeLottery.list
    //             },
    //             {
    //                 id: 'dra-integral-draw',
    //                 active: false,
    //                 name: '积分抽奖',
    //                 href: UrlRou.draIntegralLottery.list
    //             },
    //             {
    //                 id: 'dra-participate-member',
    //                 active: false,
    //                 name: '参与用户列表',
    //                 href: UrlRou.temStyle1.list
    //             },
    //         ]
    //     },
    //     {
    //         id: 'system-management',
    //         faIconHead: fa.faTint,
    //         name: '系统管理',
    //         faIconShowStatus: fa.faEllipsisH,
    //         active: false,
    //         href: UrlRou.sysOrganize.list,
    //         menus: [
    //             {
    //                 id: 'sys-organize',
    //                 active: false,
    //                 name: '组织管理',
    //                 href: UrlRou.sysOrganize.list
    //             },
    //             {
    //                 id: 'sys-role',
    //                 active: false,
    //                 name: '角色管理',
    //                 href: UrlRou.sysRole.list
    //             },
    //             {
    //                 id: 'sys-user',
    //                 active: false,
    //                 name: '用户管理',
    //                 href: UrlRou.sysUser.list
    //             },
    //             {
    //                 id: 'sys-function',
    //                 active: false,
    //                 name: '功能管理',
    //                 href: UrlRou.sysFunction.list
    //             },
    //             {
    //                 id: 'sys-menu',
    //                 active: false,
    //                 name: '菜单管理',
    //                 href: UrlRou.sysMenu.list
    //             },
    //             {
    //                 id: 'sys-permissions',
    //                 active: false,
    //                 name: '权限管理',
    //                 href: UrlRou.sysPermissions.list
    //             },
    //         ]
    //     },
    //    {
    //         id: 'aft-apply-order-line',
    //         active: false,
    //         name: '售后申请详情',
    //         href: UrlRou.aftApplyOrderLine.list,
    //     },
    //            {
    //                 id: 'goo-in-warehouse',
    //                 active: false,
    //                 name: '品牌推荐商品表',
    //                 href: UrlRou.gooInWarehouse.list,
    //             },
    //            {
    //                 id: 'goo-out-warehouse',
    //                 active: false,
    //                 name: '通讯管理',
    //                 href: UrlRou.gooOutWarehouse.list,
    //             },
              /* {
                    id : 'mes-create',
                    active : false,
                    name : '活动管理',
                    href : UrlRou.mesCreate.list,
                },*/
    //            {
    //                 id: 'mem-point',
    //                 active: false,
    //                 name: '积分管理',
    //                 href: UrlRou.memPoint.list,
    //             },
    //            {
    //                 id: 'mem-raffle-ticket',
    //                 active: false,
    //                 name: '抽奖券管理',
    //                 href: UrlRou.memRaffleTicket.list,
    //             },
    //            {
    //                 id: 'con-feedback',
    //                 active: false,
    //                 name: '售后申请详情',
    //                 href: UrlRou.conFeedback.list,
    //             },
    //    {
    //         id: 'con-share-manage',
    //         active: false,
    //         name: '分享管理',
    //         href: UrlRou.conShareManage.list,
    //     },
    //     {
    //         id: 'template-example',
    //         faIconHead: fa.faTint,
    //         name: '模板示例',
    //         faIconShowStatus: fa.faEllipsisH,
    //         active: false,
    //         href: UrlRou.temStyle1.list,
    //         menus: [
    //             {
    //                 id: 'tem-style1',
    //                 active: false,
    //                 name: '模板1',
    //                 href: UrlRou.temStyle1.list
    //             },
    //             {
    //                 id: 'tem-style2',
    //                 active: false,
    //                 name: '模板2',
    //                 href: UrlRou.temStyle2.list
    //             },
    //         ]
    //     },
    // ];

    constructor(private router: Router, private route: ActivatedRoute) {
    }

    loadMenu() {
        if (Zero3LayoutMenuComponent.modulesLoaded) {
            return;
        }
        const self = this;
        Services.sysMenu.listMenuByLogin().subscribe(item => {
            if (!isNullOrUndefined(item) && !isNullOrUndefined(item.domains)) {
                Zero3LayoutMenuComponent.modules = self.translateFirstMenu(item.domains);
                Zero3LayoutMenuComponent.modulesLoaded = true;
                self.modules = Zero3LayoutMenuComponent.modules;
            }
        });
    }

    translateFirstMenu(menu?: Array<any>) {
        if (isNullOrUndefined(menu)) {
            return menu;
        }
        const self = this;
        return menu.map(item => {
            return {
                id: item.serCode,
                faIconHead: fa.faTint,
                name: item.serName,
                faIconShowStatus: fa.faEllipsisH,
                active: false,
                href: item.serUri,
                menus: self.translateSecondMenu(item.children)
            };
        });
    }

    translateSecondMenu(children?: Array<any>) {
        if (isNullOrUndefined(children)) {
            return children;
        }
        return children.map(item => {
            return {
                id: item.serCode,
                active: false,
                name: item.serName,
                href: item.serUri
            };
        });
    }

    init() {
        this.menu.self = this;
        //
        this.moduleId = this.route.snapshot.paramMap.get('moduleId');
        this.menuId = this.route.snapshot.paramMap.get('menuId');
        //
        if (isNullOrUndefined(this.moduleId) && !isNullOrUndefined(Z3LMModuleId)) {
            this.moduleId = Z3LMModuleId;
            this.menuId = Z3LMMenuId;
        }
        if (!isNullOrUndefined(this.moduleId)) {
            Z3LMModuleId = this.moduleId;
            Z3LMMenuId = this.menuId;
        }
        /**
         * module
         */
        this.modules.forEach(item => item.active = false);
        const module = this.modules.find(item => item.id === this.moduleId);
        if (!isNullOrUndefined(module)) {
            // @linkage
            this.menu.upper.nav.self.navbar.module.name = module.name;
            //
            module.active = true;
            const menus: Array<Object> = module.menus;
            /**
             * menu
             */
            menus.forEach(item => item['active'] = false);
            const menu = menus.find(item => item['id'] === this.menuId);
            if (!isNullOrUndefined(menu)) {
                // @linkage
                this.menu.upper.nav.self.navbar.menu.name = menu['name'];
                //
                menu['active'] = true;
            } else {
                console.log('not find menu...');
                module.menus[0]['active'] = true;
                this.router.navigate([module.href, {moduleId: module.id, menuId: module.menus[0].id}]);
            }
        } else {
            console.log('not find module...');
            this.modules[0].active = true;
            this.modules[0].menus[0]['active'] = true;
            // @linkage
            this.menu.upper.nav.self.navbar.module.name = this.modules[0].name;
            // @linkage
            this.menu.upper.nav.self.navbar.menu.name = this.modules[0].menus[0]['name'];

            if (this.menu.upper.module !== undefined) {
                // @linkage
                this.menu.upper.module.id = this.modules[0].id;
                // @linkage
                this.menu.upper.module.menu.id = this.modules[0].menus[0]['id'];
            }

            this.router.navigate([this.modules[0].href,
                {moduleId: this.modules[0].id, menuId: this.modules[0].menus[0].id}]);
        }
    }

    ngOnInit() {
        this.loadMenu();
        if (Zero3LayoutMenuComponent.modulesLoaded) {
            this.modules = Zero3LayoutMenuComponent.modules;
            this.init();
        }
    }
}
